Garbage Collection for Strongly-typed Languages Using Run-time Type Reconstruction Garbage Collection for Strongly-typed Languages Using Run-time Type Reconstruction

نویسندگان

  • Shail Aditya
  • Christine H. Flood
  • James E. Hicks
چکیده

Garbage collectors perform two functions: live-object detection and dead-object reclamation. In this paper, we present a new technique for live-object detection based on run-time type reconstruction for a strongly-typed, polymorphic language. This scheme uses compile-time type information together with the run-time tree of activation frames to determine the exact type of every object participating in the computation. These reconstructed types are then used to identify and traverse the live heap objects during garbage collection. We describe an implementation of our scheme for the Id parallel programming language compiled for the *T multi-processor architecture. We present simulation studies that compare the performance of type-reconstructing garbage collection with conservative garbage collection and compiler-directed storage reclamation. 1 Introduction Dynamic memory management is an integral component of modern programming languages such as C++, Common Lisp, SML, and Haskell that support the notion of a globally shared heap of objects. It is possible to manage the heap memory explicitly by means of explicit allocation and deallocation calls, but usually it is more convenient to use a separate garbage collector that reclaims storage once it is no longer in use. In such cases, the overall performance of the user program depends heavily on the choice of garbage collection technique and its run-time performance. Abstractly, a garbage collector performs two functions: it distinguishes live objects from those that are garbage (live-object detection), and it reclaims the storage allocated to objects that are garbage (dead-object reclamation). For live-object detection, the garbage collector must be able to distinguish scalar objects from heap objects and determine their sizes (object identiication). Conventional techniques for object identiication 3, 5] operate with a very simple memory model and make little or no use of language and compiler-speciic information. In this paper, we present a new technique for object identiication based on run-time \type reconstruction" for polymorphic languages 1]. Our scheme bridges the gap between the compiler and the garbage collector by using compiler-generated, polymorphic type information and the dynamic call tree of activation frames to compute the exact run-time types of all

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Garbage Collection for Strongly - Typed Languagesusing Run - time Type

Garbage collectors perform two functions: live-object detection and dead-object reclamation. In this paper, we present a new technique for live-object detection based on run-time type reconstruction for a strongly-typed, polymorphic language. This scheme uses compile-time type information together with the run-time tree of activation frames to determine the exact type of every object participat...

متن کامل

Compiler-directed Type Reconstruction for Polymorphic Languages Compiler-directed Type Reconstruction for Polymorphic Languages

In tagless implementations of polymorphic languages, the run-time types of data objects may not be completely determined at compile-time. With ML-like static type-checking, a static type template can be produced for each polymorphic function that may be instantiated at run-time according to the types of its actual arguments. Still, as noted in 5], it may not be possible to reconstruct the types...

متن کامل

Functional encapsulation and type reconstruction in a strongly-typed, polymorphic language

Static type systems are traditionally used to prevent run-time type-errors in user programs and to assign appropriate storage representations to objects during compilation. In this thesis, we explore some new ways of using static type information in the design, compilation, and execution of programs written in a strongly-typed, polymorphic language. Programmers often nd it useful to know whethe...

متن کامل

Storage Allocation in Typed Languages

Several interfaces between a strongly typed language and a storage allocator or deallocator are defined. Using these interfaces, it is possible to program a wide variety of allocation and automatic deallocation strategies: boundary tag allocator, buddy system, reference counting, trace-and-mark garbage collection and many others. Provided the allocator and deallocator have certain well-defined ...

متن کامل

Don’t Stop the BIBOP: Flexible and Efficient Storage Management for Dynamically Typed Languages

This paper describes a storage management system that is flexible and efficient. The representation of run-time tags yields fast allocation, type testing, and field extraction, and the memory model reduces virtual memory paging during garbage collection. The storage management system coexists gracefully with other languages’ run-time systems, facilitating the use of multiple languages within a ...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2007